iT邦幫忙

0

[Day 3] PyQt5 從零學習筆記

  • 分享至 

  • xImage
  •  

目標

  1. 建立表單輸入
  2. 學習 Qt Desinger

建立表單輸入

import PyQt5.QtWidgets as qtw
import PyQt5.QtGui as qtg
class Pig4Window(qtw.QWidget):
    def __init__(self):
        super().__init__()
        # 視窗標題
        self.setWindowTitle("泥好 FormLayout")
        # 設定目前這個視窗的layout為表單形式
        formLayout = qtw.QFormLayout()
        self.setLayout(formLayout)
        # 新增標籤
        my_label = qtw.QLabel("Day3 PyQt")
        my_label.setFont(qtg.QFont("Arial", 44))    # 設定標籤文字的字型&大小
        height = qtw.QLineEdit(self)
        weight = qtw.QLineEdit(self)
        formLayout.addRow(my_label)
        formLayout.addRow("身高", height)
        formLayout.addRow("體重", weight)
        formLayout.addRow(qtw.QPushButton("按我輸入", clicked = lambda: press()))
        # 顯示視窗
        self.show()
        def press():
            my_label.setText(f"已經按下按鈕, 你的身高:{height.text()} 公分 體重:{weight.text()} 公斤")        
app = qtw.QApplication([])
p4w = Pig4Window()
app.exec_()

成功執行畫面如下 :
FormLayout
身高輸入 163 , 體重輸入 46, 並且按下"按我輸入"的按鈕, 畫面如下 :
按下按鈕

Qt Desinger

要先載sudo apt install qttools5-dev-tools(我是使用Ubuntu)
Windows 用pip install PyQt5 PyQt5Designer
載完以後就可以啟動看看了使用designerdesinger.exe
成功的話畫面如下:
Qt Designer
Step1:選擇 Main Window, 建立
step1
現在來看看方便快速的操作了,拖曳就可以完成了
Step2:從左邊拖曳 Push Button 跟一個 Label 進來
像這樣:拖曳
Step3:從右邊設定他們的屬性(像是文字大小字型等),最重要的是幫標籤 & 按鈕取名字,方便以後做操作
像這樣:
調整屬性&取名字
Step4:存檔,按左上角檔案存檔,記得存到pyqt5資料夾下,存成day3.ui
Step5:將剛剛存的.ui 轉成 .py,只要在你的 terminal 輸入pyuic5 -x day3.ui -o day3.py
檔案就會多一個 day3.py 出來:
day3.py
Step6:現在可以來執行 day3.py 看看了
成功的話畫面如下:
執行day3.py
Step7:幫按鈕加功能,點開 day3.py ,新增一個函式給它

    def press(self):
        self.my_label.setText("完成 Day3")

Step8:找到建立按鈕的那行,給它我們剛剛新增的函式
self.my_button= QtWidgets.QPushButton(self.centralwidget, clicked=lambda:self.press())
Step9:執行,成功畫面如下:
還沒按
按下"按我!!",畫面如下:
https://ithelp.ithome.com.tw/upload/images/20250506/201726680Gid1ck9bI.png

恭喜Day3已經完成,今天學習到新方法,有沒有覺得超級方便又快速阿!明天再繼續學酷東西 Bye~


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言